home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Softdisk Magazette Volume 2, No. 08 (1983-04)(Softdisk)(Disk 2 of 2 Side A).zip / Softdisk Magazette Volume 2, No. 08 (1983-04)(Softdisk)(Disk 2 of 2 Side A).do / Q & D RAT.bas < prev    next >
BASIC Source File  |  1996-12-24  |  9KB  |  145 lines

  1. 20 IN$ = "                                                                                                                                                                                                                                       "
  2. 30  REM *************************  <CTRL-J><CTRL-G><CTRL-J><CTRL-G>THIS PROGRAM WON'T WORK IF  YOU CHANGE LINE 20 OR IN-   SERT LINES BEFORE IT.<CTRL-G><CTRL-J><CTRL-G>        ************************* <CTRL-J><CTRL-J>
  3. 100  GOTO 1000
  4. 300 A$ = "": CALL 768: IF  PEEK(812)  THEN A$ =  LEFT$(IN$, PEEK(812))
  5. 310  RETURN 
  6. 999  REM   PATCH0.1=1100,1160,1162,30090,60000=12/10/82
  7. 1000  SPEED= 255: CALL  -1233: REM  INIT TEXT MODE
  8. 1010  GOSUB 63100
  9. 1020  HIMEM: 32768: REM  PROTECT RWTS BUFFER
  10. 1030  REM <CTRL-J>TS%(0,N) = NEXT TSL SEC     TS%(N,0) = FILE TRACKS      TS%(N,1) = FILE SECTORS<CTRL-J>
  11. 1040  DIM TS%(128,1)
  12. 1050  REM  SO BIG TO HANDLE REC  LEN TO 32K
  13. 1060 D$ =  CHR$(4):CR$ = ""
  14. 1070 SP$ = "                              "
  15. 1080  HOME 
  16. 1090 A$ = "READ APPLE TEXT FILES (DOS 3.3)": GOSUB 60000
  17. 1100 A$ = "Q & D PROGRAMMING -- 12/10/82": GOSUB 60000
  18. 1110 V = 3:C$ = "-": GOSUB 61000
  19. 1120  POKE 34,4: POKE 35,22:V = 23:C$ = "-": GOSUB 61000
  20. 1130  VTAB 24: PRINT "ESC TO END READ : RESET WHEN PROMPT IS *": VTAB 23:A$ = " CTRL-S TO STOP LIST ": GOSUB 60000
  21. 1139  REM <CTRL-J><CTRL-J><CTRL-J>SET UP SLOT & DRIVE<CTRL-J><CTRL-J><CTRL-J>
  22. 1140 SL = 6:DR = 1:A$ = "SLOT=" + STR$(SL) +",DRIVE=" + STR$(DR): VTAB 3: GOSUB 60000
  23. 1150  VTAB 5
  24. 1160  GOSUB 62000: PRINT "FILE TO READ ?": PRINT "*";: GOSUB 300:FI$ = A$: IF   NOT  LEN(FI$)  THEN 1170
  25. 1162  IF  LEN(FI$)  AND  LEFT$(FI$,1) = " "  THEN FI$ =  MID$ (FI$,2): GOTO 1162
  26. 1170 ZY = 0:ED = 0:FM = 0
  27. 1180 V = 6:C$ = " ": GOSUB 61000:V = 7: GOSUB 61000
  28. 1190  IF  LEN(FI$) = 0  THEN  HOME : PRINT : PRINT D$"CATALOG": GOTO 1160
  29. 1200  IF  LEN(FI$) >30  THEN  PRINT "NAME TOO LONG": GOTO 1160
  30. 1210  GOSUB 40000
  31. 1220  VTAB 4:A$ = "FILE: " +FI$: GOSUB 60000
  32. 1230 TR = 17:SE = 15
  33. 1240  GOSUB 30000
  34. 1250  HOME 
  35. 1260  IF   NOT (ED  OR FM)  THEN 1240
  36. 1270  IF   NOT FM  THEN  VTAB 6: PRINT "*"FI$" IS NOT": PRINT "A TEXT FILE OR IS NOT ON THE DISK.":V = 4:C$ = " ": GOSUB 61000: VTAB 5: GOTO 1160
  37. 1280  PRINT : PRINT " RANDOM OR SEQUENTIAL? ";: GET T$: IF T$ < >"R"  AND T$ < >"S"  THEN 1280
  38. 1281  PRINT : INPUT "SCREEN OR PRINTER OUTPUT?";K$: IF K$ < >"P"  THEN 1290
  39. 1282  INPUT "WHICH IS YOUR PRINTER SLOT?";PS: IF PS <1  OR PS >7  THEN 1290
  40. 1283  INPUT "DO YOU NEED LINE FEEDS?";K$: IF K$ = "Y"  THEN CR$ =  CHR$(13) + CHR$(10)
  41. 1284  INPUT "DO YOU NEED A DELAY AFTER C/R?";K$: IF K$ = "Y"  THEN  INPUT "HOW MANY NULLS?";NC: FOR ZZ = 1 TO NC:CR$ = CR$ + CHR$(0): NEXT 
  42. 1290  GOSUB 62000
  43. 1300  IF T$ = "R"  THEN 4000
  44. 1305  IF PS  THEN  PRINT D$"PR#"PS
  45. 1310  HOME : PRINT : PRINT D$"OPEN"FI$
  46. 1320  PRINT D$"READ"FI$
  47. 1330  ONERR  GOTO 3000
  48. 1340  SPEED= 200
  49. 1350  GOSUB 300
  50. 1360  INVERSE : PRINT A$: NORMAL : PRINT CR$;
  51. 1370  IF  PEEK(49152) = 155  THEN  GOSUB 63000: RUN 
  52. 1380  GOTO 1350
  53. 3000  SPEED= 255: PRINT : PRINT D$"CLOSE":C$ = ":":V =  PEEK(37): GOSUB 61000: PRINT "END OF FILE": INPUT "";K$: GOSUB 63000: RUN 
  54. 4000  PRINT : PRINT "DO YOU KNOW THE RECORD LENGTH? ": GET K$: IF K$ < >"N"  THEN 4050
  55. 4010  GOSUB 40000
  56. 4020  GOSUB 29000
  57. 4030  GOSUB 28000
  58. 4040  PRINT "RECORD SIZE="RL: GOTO 4060
  59. 4050  PRINT : INPUT " WHAT IS THE RECORD SIZE? ";RL
  60. 4060  INPUT "START READING AT WHAT RECORD? ";RN
  61. 4070  GOSUB 62000
  62. 4075  IF PS  THEN  PRINT D$"PR#"PS
  63. 4080  PRINT : PRINT D$"OPEN"FI$",L"RL
  64. 4090  PRINT D$"READ"FI$",R"RN
  65. 4100  PRINT CR$"   >>> RECORD "RN" <<<"CR$
  66. 4110  ONERR  GOTO 4150
  67. 4120 A$ = "": CALL 768: IF  PEEK(812)  THEN A$ =  LEFT$(IN$, PEEK(812))
  68. 4130  INVERSE : PRINT A$: NORMAL : PRINT CR$;
  69. 4140  GOTO 4120
  70. 4150  CALL 816:RN = RN +1: POKE 216,0
  71. 4160  PRINT : IF  PEEK(49152) = 155  THEN  GOSUB 63000: RUN 
  72. 4180  GOTO 4080
  73. 9999  END 
  74. 27999  REM <CTRL-J><CTRL-J><CTRL-J>DETERMINE REC LEN<CTRL-J><CTRL-J><CTRL-J>
  75. 28000 ZS = 0: FOR ZZ = 1 TO 128: IF   NOT (TS%(ZZ,0)  OR TS%(ZZ,1))  THEN RL = RL +256: NEXT 
  76. 28010  FOR ZW = ZZ TO 128
  77. 28015  IF   NOT (TS%(ZW,0)  OR TS%(ZW,1))  THEN ZX = 256: GOTO 28070
  78. 28020 TR = TS%(ZW,0):SE = TS%(ZW,1): GOSUB 50000
  79. 28030  FOR ZY = 0 TO 255: IF  PEEK(BS +ZY)  AND   NOT ZS  THEN  NEXT 
  80. 28040  IF ZY <256  THEN ZS = 1
  81. 28050  FOR ZX = ZY TO 255: IF   NOT  PEEK(BS +ZX)  THEN  NEXT 
  82. 28060  IF ZX <256  THEN ZS = 0
  83. 28070 RL = RL +ZX
  84. 28080  IF (ZS  OR ZX = 256)  THEN  NEXT ZW
  85. 28090  RETURN 
  86. 28999  REM <CTRL-J><CTRL-J><CTRL-J>BUILD TRK-SECTOR LIST<CTRL-J><CTRL-J><CTRL-J>
  87. 29000 CMD = 1:BS = 32768: GOSUB 50000
  88. 29010 TS%(0,0) =  PEEK(BS +1):TS%(0,1) =  PEEK(BS +2)
  89. 29020 ZY = 1
  90. 29030  FOR ZZ = 12 TO 254  STEP 2:TS%(ZY,0) =  PEEK(BS +ZZ):TS%(ZY,1) =  PEEK(BS +ZZ +1):ZY = ZY +1: NEXT 
  91. 29040  IF   NOT TS%(0,0)  THEN 29070
  92. 29050 TR = TS%(0,0):SE = TS%(0,1): GOSUB 50000
  93. 29060  FOR ZZ = 12 TO 22  STEP 2:TS%(ZY,0) =  PEEK(BS +ZZ):TS%(ZY,1) =  PEEK(BS +ZZ +1):ZY = ZY +1: NEXT 
  94. 29070  RETURN 
  95. 29999  REM <CTRL-J><CTRL-J><CTRL-J>VERIFY FILE PRESENCE<CTRL-J><CTRL-J><CTRL-J>
  96. 30000 SL = 6:DR = 1:CMD = 1
  97. 30010 BS = 32768
  98. 30020  GOSUB 50000
  99. 30030 TR =  PEEK(BS +1):SE =  PEEK(BS +2): IF   NOT (TR  OR SE)  THEN ED = 1
  100. 30040  FOR ZZ = 11 TO 221  STEP 35: IF  PEEK(BS +ZZ +3) = 0  THEN ED = 1: GOTO 30130
  101. 30059  REM <CTRL-J>EXTANT TEXT FILE ?<CTRL-J>
  102. 30060 FT =  PEEK(BS +ZZ +2): IF FT < >0  AND FT < >128  THEN 30130
  103. 30070  IF  PEEK(BS +ZZ) = 255  THEN 30130
  104. 30089  REM <CTRL-J>TEST FOR TITLE MATCH<CTRL-J>
  105. 30090 FJ$ = "": FOR ZY = 3 TO 32:CH =  PEEK(BS +ZZ +ZY):FJ$ = FJ$ + CHR$(CH -128 *(CH >127)): NEXT 
  106. 30100  IF  LEN(FI$) <30  THEN  IF  LEFT$(FJ$, LEN(FI$)) = FI$  AND  MID$ (FJ$, LEN(FI$) +1) =  MID$ (SP$, LEN(FI$) +1)  THEN FM = 1
  107. 30110  IF FJ$ = FI$  THEN FM = 1
  108. 30120  IF FM  THEN TR =  PEEK(BS +ZZ):SE =  PEEK(BS +ZZ +1)
  109. 30130  IF ED  OR FM  THEN 30150
  110. 30140  NEXT ZZ
  111. 30150  RETURN 
  112. 39999  REM <CTRL-J><CTRL-J><CTRL-J>POKE RWTS<CTRL-J><CTRL-J><CTRL-J>
  113. 40000  POKE 768,169: POKE 769,3: POKE 770,160: POKE 771,10: POKE 772,32: POKE 773,217: POKE 774,3: POKE 775,76: POKE 776,31:
  114. 40010  POKE 777,3: POKE 778,1: POKE 779,96: POKE 780,1: POKE 781,0: POKE 782,0: POKE 783,0: POKE 784,27: POKE 785,3:
  115. 40020  POKE 786,0: POKE 787,112: POKE 788,0: POKE 789,0: POKE 790,1: POKE 791,0: POKE 792,0: POKE 793,96: POKE 794,1:
  116. 40030  POKE 795,0: POKE 796,1: POKE 797,239: POKE 798,216: POKE 799,41: POKE 800,0: POKE 801,141: POKE 802,20: POKE 803,3:
  117. 40040  POKE 804,144: POKE 805,3: POKE 806,238: POKE 807,20: POKE 808,3: POKE 809,96
  118. 40050  RETURN 
  119. 49999  REM <CTRL-J><CTRL-J><CTRL-J>EXECUTE RWTS<CTRL-J><CTRL-J><CTRL-J>
  120. 50000  POKE 783,SEC
  121. 50010  POKE 782,TRK
  122. 50020  POKE 790,CMD
  123. 50030  POKE 780,DR
  124. 50040  POKE 779,SL *16
  125. 50050  POKE 786,0
  126. 50060  POKE 787,BS/256
  127. 50070  CALL 768
  128. 50080  IF  PEEK(788)  THEN  VTAB 24::A$ = "ERR " + STR$( PEEK(791)) +" @ TRK " + STR$(TR) +", SEC " + STR$(SE) +"--RETRYING.": GOSUB 60000: GOTO 50000
  129. 50090  RETURN 
  130. 59999  REM <CTRL-J><CTRL-J>CENTER A$<CTRL-J>
  131. 60000  HTAB (21 - LEN(A$)/2): PRINT A$: RETURN 
  132. 60999  REM <CTRL-J><CTRL-J>LINE OF C$ @ V<CTRL-J>
  133. 61000  VTAB V: FOR A = 0 TO 39: PRINT C$;: NEXT : RETURN 
  134. 61999  REM <CTRL-J><CTRL-J><CTRL-J>POKE INPUT ROUTINE<CTRL-J><CTRL-J><CTRL-J>
  135. 62000  POKE 768,169: POKE 769,128: POKE 770,133: POKE 771,51: POKE 772,32: POKE 773,111: POKE 774,253: POKE 775,162: POKE 776,0:
  136. 62010  POKE 777,189: POKE 778,0: POKE 779,2: POKE 780,41: POKE 781,127: POKE 782,201: POKE 783,0: POKE 784,208: POKE 785,2:
  137. 62020  POKE 786,169: POKE 787,92: POKE 788,201: POKE 789,13: POKE 790,240: POKE 791,16: POKE 792,157: POKE 793,10: POKE 794,8:
  138. 62030  POKE 795,232: POKE 796,138: POKE 797,201: POKE 798,230: POKE 799,208: POKE 800,232: POKE 801,234: POKE 802,234: POKE 803,234:
  139. 62040  POKE 804,234: POKE 805,234: POKE 806,234: POKE 807,234: POKE 808,142: POKE 809,44: POKE 810,3: POKE 811,96: POKE 812,230: RETURN 
  140. 62999  REM <CTRL-J><CTRL-J><CTRL-J>CLEAR OUT IN$ & CLEAN      UP LOOSE ENDS<CTRL-J><CTRL-J><CTRL-J>
  141. 63000  FOR ZZ = 2058 TO 2287: POKE ZZ,32: NEXT : POKE 49168,0: PRINT "<CTRL-D>PR#0": PRINT : PRINT "<CTRL-D>CLOSE": RETURN 
  142. 63099  REM <CTRL-J><CTRL-J><CTRL-J>FIX ?OUT OF MEMORY ERR<CTRL-J><CTRL-J><CTRL-J>
  143. 63100  POKE 816,104: POKE 817,168: POKE 818,104: POKE 819,166: POKE 820,223: POKE 821,154: POKE 822,72: POKE 823,152: POKE 824,72: POKE 825,96: RETURN 
  144. 65535  REM *******************     *                     *     * A PRODUCT OF Q & D  *     * PROGRAMMING.  DUGYM *     * QYCFYL, AUTHOR.     *     *                     *     ***********************
  145. 65535  REM *********               *           *               * SEP. 1982 *               *           *               *************